package com.boot.system.service;

import com.boot.common.result.Result;
import com.mybatisflex.core.paginate.Page;
import com.boot.system.entity.SysUser;
import com.mybatisflex.core.service.IService;

import java.util.List;
import java.util.Map;

public interface UserService extends IService<SysUser> {

    /**
     * 用户分页
     * @param queryParam 查询条件
     * @return 列表
     */
    Page<SysUser> getUserPage(Map<String, Object> queryParam);

    /**
     * 新增用户
     * @param dataParam 用户表单
     * @return 状态
     */
    Result<?> addUser(Map<String, Object> dataParam);

    /**
     * 修改用户
     * @param dataParam 用户表单
     * @return 状态
     */
    Result<?> updateUser(Map<String, Object> dataParam);

    /**
     * 删除用户
     * @param ids 多个以英文逗号(,)分割
     * @return 状态
     */
    boolean deleteUser(String ids);

    /**
     * 修改用户密码
     * @param userId 用户ID
     * @param password 密码
     * @return 状态
     */
    boolean updatePassword(Long userId, String password);

    /**
     * 更改用户密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 状态
     */
    Result<?> changePassword(String oldPassword, String newPassword);

    /**
     * 更新用户状态
     * @param username 账号
     * @param email 邮箱
     * @param phone 手机号
     * @param status 状态
     */
    void updateUserStatus(String username, String email, String phone, Integer status);

    /**
     * 更新用户登录IP
     * @param username 账号
     * @param email 邮箱
     * @param phone 手机号
     * @param ip IP
     */
    void updateLoginIp(String username, String email, String phone, String ip);

    /**
     * 账号密码登录
     * @param username 账号
     * @param email 邮箱
     * @param phone 手机号
     * @param password 密码
     * @return 用户信息
     */
    SysUser login(String username, String email, String phone, String password);

}